无法添加外键约束的原因(cannot add foreign key constraint) |
您所在的位置:网站首页 › mysql 错误代码1822 › 无法添加外键约束的原因(cannot add foreign key constraint) |
首先看下面这张表 Create table student (sno int(10) unsigned not null, sname varchar(20) not null, sex enum('男','女') default null, sage smallint unsigned, sdept varchar(10) not null Primary key (sno) );插入三条记录后: SELECT * FROM students_id.student;在这张已经建成的STUDENT表中,SNO为Primary Key, 类型为 int(10) unsigned not null 然后,创建下面这张表,其中SNO为外键,参照关系是SC,被参照是STUDENT Create table SC( cno char(4) not null, sno smallint, //外键 grade smallint, primary key(cno), foreign key (sno) references students_id.student(Sno) );创建失败 原因是在SC这张表中,作为参照关系,SNO的数据类型没有保持和被参照的表STUDENT完全一致。 应改为如下形式: Create table SC( cno char(4) not null, sno int(10) unsigned not null, grade smallint, primary key(cno), foreign key (sno) references students_id.student(Sno) );此时创建成功。需要注意的是,在SQL中,参照关系可以为主键,但在MYSQL中,参照关系不能为主键。 总结: 1.外键不能为新建表的主键; 2.外键所参照的键必须为被参照表的主键; 3.参照表的值需要在所参考的表的那一个主键中已经存在的(即不能为空) 更多相关代码可以访问 我的GITHUB |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |